package com.blq.api.service;

import com.alibaba.fastjson.JSONObject;
import com.blq.common.core.domain.R;
import com.blq.common.core.domain.entity.SysDept;
import com.blq.common.utils.ResultMsg;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.multipart.MultipartFile;

/**
 * 服务规范接口
 *
 * @author: Blq <br>
 */
public interface ApiService {

    ResultMsg queryPayeeByOrder(String orderId);

    /**
     * 功能描述: 〈获取微信手机号〉 <br>
     *
     * @param jsonObject:
     * @return com.blq.common.utils.ResultMsg
     * @Author: Blq
     * @Date: 2022/7/14 10:42
     */
    ResultMsg wxPhone(JSONObject jsonObject);

    ResultMsg wxAppAuth(JSONObject json);

    ResultMsg xcxAuth(JSONObject json);

    ResultMsg xcxLogin(JSONObject json);

    ResultMsg xcxRegister(JSONObject json);

    /**
     * @Description: 用户注册
     * @Author: Blq <br>
     * @Date: 2022/8/26 0026 11:26
     * @Param: jsonObject
     * @Return: com.blq.common.utils.ResultMsg
     **/
    ResultMsg addUser(JSONObject jsonObject);

    /**
     * @Description: 用户登录
     * @Author: Blq <br>
     * @Date: 2022/8/26 0026 13:37
     * @Param: jsonObject
     * @Return: com.blq.common.utils.ResultMsg
     **/
    ResultMsg userLogin(JSONObject jsonObject);

    /**
     * @Description: 发送手机验证码
     * @Author: Blq <br>
     * @Date: 2022/8/26 0026 13:44
     * @Param: jsonObject
     * @Return: com.blq.common.utils.ResultMsg
     **/
    ResultMsg senndMessage(JSONObject jsonObject);

    // ------------------------------->客户报修抢修

    /**
     * @Description: 新增订单
     * @Author: Blq <br>
     * @Date: 2022/8/30 0030 8:55
     * @Param: jsonObject
     * @Return: com.blq.common.utils.ResultMsg
     **/
    ResultMsg addCustomerRepair(JSONObject jsonObject);

    void automaticDispatch(String orderId);

    void automaticDispatch();

    /**
     * @Description 获取我发布的订单
     * @Author Blq <Br />
     * @Date 8:36 2022/9/1
     * @Param jsonObject
     * @Return com.blq.common.utils.ResultMsg
     **/
    ResultMsg getMyCustomerRepair(JSONObject jsonObject);

    /**
     * @Description 获取用户信息
     * @Author Blq <Br />
     * @Date 8:44 2022/9/5
     * @Param jsonObject
     * @Return com.blq.common.utils.ResultMsg
     **/
    ResultMsg getUserInfoById(JSONObject jsonObject);

    /**
     * @Description 更新用户信息
     * @Author Blq <Br />
     * @Date 9:00 2022/9/5
     * @Param jsonObject
     * @Return com.blq.common.utils.ResultMsg
     **/
    ResultMsg updateUser(JSONObject jsonObject);

    /**
     * @Description 更新用户手机号
     * @Author Blq <Br />
     * @Date 9:18 2022/9/5
     * @Param jsonObject
     * @Return com.blq.common.utils.ResultMsg
     **/
    ResultMsg updateUserPhone(JSONObject jsonObject);

    /**
     * @Description 更新用户密码
     * @Author Blq <Br />
     * @Date 9:27 2022/9/5
     * @Param jsonObject
     * @Return com.blq.common.utils.ResultMsg
     **/
    ResultMsg updatePassword(JSONObject jsonObject);

    /**
     * @Description 文件上传
     * @Author Blq <Br />
     * @Date 9:35 2022/9/5
     * @Param file
     * @Return com.blq.common.utils.ResultMsg
     **/
    ResultMsg sendOss(MultipartFile file, String notesName);

    /**
     * @Description 商户注册
     * @Author Blq <Br />
     * @Date 8:45 2022/9/6
     * @Param jsonObject
     * @Return com.blq.common.utils.ResultMsg
     **/
    ResultMsg merchantRegistration(JSONObject jsonObject);

    /**
     * @Description 接口描述 : 商家app软件登录接口
     * @Params  * @param null
     *          userName : 用户手机号
     *          userPassword: 用户密码
     * @Return
     * @Author xiaw
     * @Date 2022/12/25 0:02
     */
    ResultMsg merchantLogin(JSONObject jsonObject);

    JSONObject getUserInfo(String userName);

    /**
     * @Description 获取我的工单
     * @Author Blq <Br />
     * @Date 8:57 2022/9/6
     * @Param jsonObject
     * @Return com.blq.common.utils.ResultMsg
     **/
    ResultMsg myTickets(JSONObject jsonObject);

    /**
     * @Description 接口描述 : 查看我的待办理订单
     * @Params  * @param null
     *              loginmanId :1023995635902185472----登录人的id
     * @Return
     * @Author xiaw
     * @Date 2022/12/24 23:58
     */
    ResultMsg ticketPool(JSONObject jsonObject);
//    ResultMsg ticketPool();

    /**
     * @Description 获取全部部门
     * @Author Blq <Br />
     * @Date 10:55 2022/9/6
     * @Return com.blq.common.utils.ResultMsg
     **/
    ResultMsg getDepts(JSONObject jsonObject);

    ResultMsg getDept(String deptId);

    /**
     * @Description 获取部门下人员
     * @Author Blq <Br />
     * @Date 11:03 2022/9/6
     * @Param jsonObject
     * @Return com.blq.common.utils.ResultMsg
     **/
    ResultMsg getDeptUser(JSONObject jsonObject);

    /**
     * @Description 工单提交审核
     * @Author Blq <Br />
     * @Date 8:35 2022/9/7
     * @Param jsonObject
     * @Return com.blq.common.utils.ResultMsg
     **/
    ResultMsg ticketReview(JSONObject jsonObject);

    /**
     * @Description 查询工单状态
     * @Author Blq <Br />
     * @Date 9:11 2022/9/7
     * @Param jsonObject
     * @Return com.blq.common.utils.ResultMsg
     **/
    ResultMsg getTicketRow(JSONObject jsonObject);

    /**
     * @Description 接口描述 : 师傅端个人中心-查看待接单按钮
     * @Params  * @param null
     * @Return
     * @Author xiaw
     * @Date 2022/12/25 0:06
     */
    ResultMsg myTicketsMy(JSONObject jsonObject);

    /**
     * @Description 审核请求
     * @Author Blq <Br />
     * @Date 10:36 2022/9/7
     * @Param jsonObject
     * @Return com.blq.common.utils.ResultMsg
     **/
    ResultMsg approveRequest(JSONObject jsonObject);

    /**
     * @Description 新增工单下勘察资料
     * @Author Blq <Br />
     * @Date 8:56 2022/9/8
     * @Param jsonObject
     * @Return com.blq.common.utils.ResultMsg
     **/
    ResultMsg addInvestigation(JSONObject jsonObject);

    /**
     * @Description 新增报价单
     * @Author Blq <Br />
     * @Date 9:28 2022/9/8
     * @Param jsonObject
     * @Return com.blq.common.utils.ResultMsg
     **/
    ResultMsg addAuotation(JSONObject jsonObject);

    /**
     * @Description 确认到账
     * @Author Blq <Br />
     * @Date 9:48 2022/9/13
     * @Param jsonObject
     * @Return com.blq.common.utils.ResultMsg
     **/
    ResultMsg confirmationOfReceipt(JSONObject jsonObject);

    /**
     * @Description 接口描述 : 施工材料上传
     * @Params  * @param null
     * @Return
     * @Author xiaw
     * @Date 2022/12/26 17:05
     */
    ResultMsg uploadMaterials(JSONObject jsonObject);

    /**
     * @Description 查询工单下材料信息
     * @Author Blq <Br />
     * @Date 9:21 2022/9/14
     * @Param jsonObject
     * @Return com.blq.common.utils.ResultMsg
     **/
    ResultMsg selectMaterials(JSONObject jsonObject);

    /**
     * @Description 新增评价信息
     * @Author Blq <Br />
     * @Date 9:39 2022/9/14
     * @Param jsonObject
     * @Return com.blq.common.utils.ResultMsg
     **/
    ResultMsg addEvaluation(JSONObject jsonObject);



    /**
     * @Description 最终财务确认
     * @Author Blq <Br />
     * @Date 10:01 2022/9/14
     * @Param jsonObject
     * @Return com.blq.common.utils.ResultMsg
     **/
    ResultMsg finalFinancialConfirmation(JSONObject jsonObject);

    /**
     * @Description 忘记密码
     * @Author Blq <Br />
     * @Date 10:43 2022/9/17
     * @Param jsonObject
     * @Return com.blq.common.utils.ResultMsg
     **/
    ResultMsg forgetPassword(JSONObject jsonObject);

    /**
     * @Description 查询全部公司
     * @Author Blq <Br />
     * @Date 14:23 2022/10/14
     * @Return com.blq.common.utils.ResultMsg
     **/
    ResultMsg firm(JSONObject jsonObject);

    /**
     * @Description 修改派单信息
     * @Author Blq <Br />
     * @Date 14:59 2022/10/14
     * @Param jsonObject
     * @Return com.blq.common.utils.ResultMsg
     **/
    ResultMsg editCuotomer(JSONObject jsonObject);

    /**
     * @Description 获取工单接单人信息
     * @Author Blq <Br />
     * @Date 15:29 2022/10/17
     * @Param customerKey
     * @Return com.blq.common.utils.ResultMsg
     **/
    ResultMsg userInfoSys(String customerKey);

    /**
     * @description: 查询订单下单财务信息
     * @author: Bu Ling Qiang
     * @date: 2022/11/7 10:06
     * @param: id
     * @return: com.blq.common.utils.ResultMsg
     */
    R finance(String id);

    /**
     * @description: 获取全部业务分类
     * @author: Bu Ling Qiang
     * @date: 2022/11/7 11:16
     * @param:
     * @return: com.blq.common.utils.ResultMsg
     */
    ResultMsg serveClassify();
    /**
     * @Description 接口描述 : 订单池展示接口
     * @Params  * @param null
     * @Return
     * @Author xiaw
     * @Date 2022/12/25 0:04
     */
    ResultMsg orderPoollist();

    /**
     * @Description 接口描述 : 转单接口--把订单转移到订单池
     * @Params  * @param null
     *      customer_key : 订单id
     *      loginmanId  : 当前登录人id
     * @Return
     * @Author xiaw
     * @Date 2022/12/25 0:15
     */
    ResultMsg transfer(JSONObject jsonObject);

    /**
     * 工单池抢单接口----需要工人id和订单id
     * @param jsonObject
     * @return
     */
    ResultMsg snatchOrders(JSONObject jsonObject);
    /**
     * @Description 接口描述 : 员工关闭工单接口
     * 传入
     *      用户id
     *      订单id
     * @Params  * @param null
     * @Return
     * @Author xiaw
     * @Date 2022/12/26 9:39
     */
    ResultMsg close(JSONObject jsonObject);
    /**
     * @Descriptio 搜索框高级查询
     * @Author Blq <Br />
     * @Date 14:58 2022/10/14
     * @Param jsonObject
     * @Return com.blq.common.utils.ResultMsg
     **/
    ResultMsg advancedQuery(JSONObject jsonObject);
    /**
     * @Description 接口描述 : 指派订单
     * @Params  * @param null
     * @Return
     * @Author xiaw
     * @Date 2022/12/28 17:11
     */
    ResultMsg designate(JSONObject jsonObject);
    /**
     * @Description 接口描述 : 各种提交按钮
     * @Params  * @param null
     * @Return
     * @Author xiaw
     * @Date 2022/12/30 11:14
     */
    ResultMsg submit(JSONObject jsonObject);

    @Transactional
    ResultMsg updateQuotation(JSONObject jsonObject);

    ResultMsg userPaymentOrder(JSONObject jsonObject);

    @Transactional
    ResultMsg userSubmitPayment(JSONObject jsonObject);

    /**
     * @Description 接口描述 : 客户签单接口
     * @Params  * @param quotation_scmor合同/quotation_price价格
     * @Return
     * @Author xiaw
     * @Date 2023/1/2 17:41
     */
    ResultMsg SignCcontract(JSONObject jsonObject);
    /**
     * @Description 接口描述 :  发现页接口
     * @Params  * @param null 传入用户id
     * @Return
     * @Author xiaw
     * @Date 2023/1/2 22:01
     */
    ResultMsg find(JSONObject jsonObject);
    /**
     * @Description 接口描述 : 客服确认到账接口
     * @Params  * @param null
     * @Return
     * @Author xiaw
     * @Date 2023/1/3 9:52
     */
    ResultMsg acknowledgement(JSONObject jsonObject);
    /**
     * @Description 接口描述 : 查看用户的所有订单
     * @Params  * @param null
     * @Return
     * @Author xiaw
     * @Date 2023/1/6 15:44
     */
    ResultMsg viewAllUserOrders(JSONObject jsonObject);
    /**
     * @Description 接口描述 :
     * @Params  * @param null
     * @Return 查询所用用户的接口
     * @Author xiaw
     * @Date 2023/1/17 9:19
     */
    ResultMsg queryUser();
    /**
     * @Description 接口描述 :
     * @Params  * @param null
     * @Return 查询该公司所有员工
     * @Author xiaw
     * @Date 2023/1/17 11:45
     */
    ResultMsg enquiringWorker(Long deptId);
    /**
     * @Description 接口描述 : 供电所查该供电所顶单--checkAnOrder
     * @Params  * @param null
     * @Return
     * @Author xiaw
     * @Date 2023/1/6 15:44
     */
    ResultMsg checkAnOrder(@RequestBody JSONObject jsonObject);
    /**
     * @Description 接口描述 :查所有的财务人员 -checkFinancialAffairs
     * @Params  * @param null
     * @Return
     * @Author xiaw
     * @Date 2023/1/6 15:44
     */
    R checkFinancialAffairs(@RequestBody JSONObject jsonObject);
    /**
     * @Description 接口描述 :
     * @Params  * @param null
     * @Return 查询各类订单
     * @Author xiaw
     * @Date 2023/1/31 14:43
     */
    R queryVariousOrders(JSONObject jsonObject);

    Boolean JudgeTheRole(JSONObject jsonObject);
//    /**
//     * @Description 接口描述 : 微信三方登录
//     * @Params  * @param null
//     * @Return
//     * @Author xiaw
//     * @Date 2023/2/16 17:31
//     */
//    ResultMsg weChat(String code);
}
